package com.example.base.security.service;



import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.base.excetion.GlobalExcetion;
import com.example.base.security.domain.SysMenuEntity;
import com.example.base.security.domain.SysRoleEntity;
import com.example.base.security.domain.SysUserEntity;
import com.example.base.security.domain.vo.SysUserCommonVo;


import java.io.Serializable;
import java.util.List;

/**
 * @author Xiongx
 * @version 1.0
 * @date 2021/6/11 14:47
 * @since JDK 1.8
 */
public interface SysUserService extends IService<SysUserEntity> {



    /**
     * 用户信息公共校验
     * @param
     * @return
     */
     void commonValited(SysUserCommonVo vo) throws GlobalExcetion;


    /**
     * 根据用户名查询实体
     * @Author Sans
     * @CreateTime 2019/9/14 16:30
     * @Param  username 用户名
     * @Return SysUserEntity 用户实体
     */
    SysUserEntity selectUserByName(String username);

    /**
     * 查询用户通过手机号
     * @param phone
     * @return
     */
    SysUserEntity selectUserByPhone(String phone);

    /**
     * 查询用户通过邮箱地址
     * @param mail
     * @return
     */
    SysUserEntity selectUserByMail(String mail);
    /**
     * 根据用户ID查询角色集合
     * @Author Sans
     * @CreateTime 2019/9/18 18:01
     * @Param  userId 用户ID
     * @Return List<SysRoleEntity> 角色名集合
     */
    List<SysRoleEntity> selectSysRoleByUserId(Serializable userId);
    /**
     * 根据用户ID查询权限集合
     * @Author Sans
     * @CreateTime 2019/9/18 18:01
     * @Param  userId 用户ID
     * @Return List<SysMenuEntity> 角色名集合
     */
    List<SysMenuEntity> selectSysMenuByUserId(Serializable userId);

    /**
     * 分页
     * @param pageNum 页码
     * @param pageSize 条数
     * @param name 账号
     * @return
     */
    IPage<SysUserEntity> page(Integer pageNum, Integer pageSize, String name,List<Integer> deptId);


}
